#ifndef PlayerTracker_h_
#define PlayerTracker_h_

#include <opencv\cv.h>
#include <opencv\highgui.h>

#include "Player.h"

class PlayerTracker
{
	Player _p1;
	cv::Rect _p1Win;

	Player _p2;
	cv::Rect _p2Win;
	
	cv::Mat _frame;
	cv::Mat _prevFrame;

	cv::Mat _startFrame;
	cv::Mat _startGray;

	int _frameNum;

	std::vector<cv::Point2f> _prevP1Pts;
	std::vector<cv::Point2f> _prevP2Pts;

	std::vector<cv::Point2f> _currP1Pts;
	std::vector<cv::Point2f> _currP2Pts;

public:
	PlayerTracker();
	PlayerTracker(cv::Mat, cv::Rect, cv::Rect);
	~PlayerTracker(void);

	void updateFrame(cv::Mat);

	void getFilteredTrackingPts(cv::Mat, cv::Rect, std::vector<cv::Point2f>&, cv::Rect, std::vector<cv::Point2f>&);
	void performOpFlow(cv::Mat prevFrame, cv::Mat newFrame, std::vector<cv::Point2f>, std::vector<cv::Point2f>&, std::vector<cv::Point2f>, std::vector<cv::Point2f>&);
	void filterPointsBasedOnLocation();
	
	Player getPlayer(int);
};

#endif